Перейти к основному содержимому

iOS

Разработчику Архитектору Инженеру

iOS

iOS – мобильная операционная система, разработанная Apple Inc., предназначенная для работы на iPhone, iPad и iPodTouch. Она основана на той же ядерной основе, что и macOS – ядре XNU, и является частью более широкой экосистемы Apple, включающей также iPadOS, watchOS, tvOS, macOS.


Как устроена iOS?

Архитектура iOS включает в себя следующие компоненты:

  • Ядро (XNU) – управляет взаимодействием с оборудованием;
  • UNIX Layer (Darwin) – BSD API, процессы, файловая система, сетевые протоколы;
  • UIKit / SwiftUI – фреймворки для пользовательского интерфейса;
  • SpringBoard – системная оболочка (заменяет Finder);
  • App Store и Sandboxing – безопасность и изоляция приложений;
  • Файловая система APFS;
  • Средства командной строки (в jailbroken-устройствах).

1. Ядро

★ Ядро, как и в macOS, используется гибридное – XNU, которое сочетает элементы монолитного и микроядра. Компоненты – Mach для управления памятью, IPC; BSD Subsystem для реализации UNIX API; I/O Kit, библиотека драйверов на C++.

Особенности ядра в iOS:

  • Secure Virtual Memory (SVM) – защита данных в памяти;
  • Address Space Layout Randomization (ASLR) – усложняет эксплойты;
  • Code Signing Enforcement – запуск только подписанного кода;
  • Pointer Authentication Codes (PAC) – защита указателей (на чипах A12 и выше);
  • Application Sandbox – изоляция приложений друг от друга.

2. Эксклюзивность

★ Эксклюзивность. Как и в macOS, iOS выпускается только для устройств Apple, а каждый выпуск получает собственное имя и номер версии, старые версии прекращают поддержку. Следовательно, политика Apple связана с множеством ограничений, в первую очередь обоснованных безопасностью.

Процесс снятия ограничений, наложенным на устройство (в основном iOS), называют джейлбрейк (Jailbreak). Он позволяет получить root-доступ (права суперпользователя) и устанавливать неподписанные приложения, изменять системные файлы и настраивать ОС глубже, чем это разрешено по умолчанию.

Это, конечно, выполняется для установки неофициальных (и пиратских) приложений, кастомизации интерфейса, удаления предустановленных приложений, доступа к скрытым функциям. И такой процесс – нарушение лицензионного соглашения, который приведёт к юридическим проблемам, потере гарантии и поддержки, а также проблемам со стабильностью и безопасностью.


3. Среда и ключевое ПО

★ Среда и ключевое ПО, службы Графическая среда:

  • SpringBoard – главный интерфейс iOS (экран с иконками);
  • NotificationCenter – центр уведомлений;
  • Control Center – быстрые настройки;
  • Dock (на iPad) – аналог рабочего стола.

Интеграция с Apple экосистемой:

  • iCloud – синхронизация данных;
  • AirDrop, Handoff, Universal Clipboard;
  • Find My iPhone, Find My Network.

Ключевые приложения:

  • Safari, Messages, FaceTime, Photos, Notes;
  • App Store – центр загрузки приложений;
  • Health, Wallet, Maps, Music;
  • Shortcuts – автоматизация задач.

Службы:

  • launchd – система запуска и управления процессами (как в macOS);
  • backboardd – управление экраном и кнопками;
  • mediaserverd – работа с медиафайлами.

4. Инструменты

★ Полезные инструменты iOS

На уровне пользователя:

  • Shortcuts – мощная система автоматизации;
  • Files – файловый менеджер (начиная с iOS 11);
  • Screen Recording – запись экрана;
  • Accessibility Features – голосовое управление, увеличение, VoiceOver.

Для разработчиков и продвинутых пользователей:

  • Xcode – официальная IDE Apple;
  • Instruments – профилирование производительности;
  • Console.app – просмотр логов;
  • Simulator – тестирование приложений без устройства;
  • TestFlight – бета-тестирование.

Для джейлбрейкнутых устройств имеются отдельные средства, которые позволяют получить расширенный доступ к ОС.


5. Сеть

★ Работа с сетью в iOS.

Wi-Fi и Bluetooth:

  • Wi-Fi Settings – выбор сети, заблокированные сети, DNS;
  • Bluetooth – подключение аксессуаров;
  • Personal Hotspot – раздача интернета.

Инструменты диагностики:

  • Network Link Conditioner – имитация плохого соединения (требуется установка через Xcode);
  • Settings > General > About > Diagnostics & Usage;
  • Wi-Fi Assist – переключение на мобильный интернет при слабом Wi-Fi.

Удалённый доступ:

  • Remote Debugging – через Xcode;
  • SSH (при джейлбрейке) – для низкоуровневого доступа.

6. Запуск iOS на Windows, Linux, macOS

Запустить iOS как полноценную ОС на обычном ПК невозможно из-за привязки к Apple-аппаратуре, но существуют способы её эмуляции и тестирования – Xcode Simulator на macOS, iPadian, Corellium, VirtualBox / QEMU на других ОС.


Файловая система и структура каталогов iOS

Файловая система iOS основана на ядре Darwin (как и macOS) и использует APFS (Apple File System) в качестве стандартной файловой системы. Однако в отличие от macOS, iOS применяет значительно более строгую модель изоляции приложений, управление доступом через sandboxing и ограничения на взаимодействие между компонентами системы.

Структура каталогов iOS оптимизирована под мобильные устройства с ограниченными ресурсами, безопасность пользовательских данных и контроль со стороны Apple. Доступ к большинству системных каталогов закрыт даже для разработчиков без джейлбрейка.

/ — корневой каталог

Корень файловой системы содержит все остальные каталоги. На iOS этот уровень практически недоступен обычным пользователям и приложениям.

/System — защищённые системные компоненты

Этот каталог содержит неизменяемые системные файлы:

  • /System/Library — фреймворки, расширения, шрифты, звуки;
  • /System/Applications — предустановленные системные приложения (например, Телефон, Сообщения);
  • /System/DriverKit — драйверы нового поколения.

Все эти файлы защищены механизмом System Integrity Protection (SIP) и подписью кода. Изменение невозможно без отключения защиты и наличия root-доступа.

/usr — системные утилиты и библиотеки

Содержит компоненты Unix-подсистемы:

  • /usr/bin — команды терминала: ls, grep, ps;
  • /usr/lib — системные библиотеки;
  • /usr/include — заголовочные файлы (доступны только в Xcode SDK).

На iOS многие из этих утилит либо отсутствуют, либо сильно урезаны по сравнению с macOS.

/bin и /sbin — базовые исполняемые файлы

Содержат минимальный набор утилит для работы системы:

  • /bin/sh — оболочка;
  • /sbin/reboot, /sbin/mount — административные команды.

Доступ к этим каталогам возможен только в режиме восстановления или через терминал с root-привилегиями.

/etc — конфигурационные файлы

Хранит системные настройки:

  • /etc/hosts — локальное сопоставление доменов;
  • /etc/passwd, /etc/group — совместимость с Unix (реальные данные хранятся в Open Directory).

Большинство конфигураций в iOS управляется через plist-файлы и настройки профиля, а не через текстовые файлы.

/var — переменные данные

Изменяющиеся во время работы системы файлы:

  • /var/log — системные журналы;
  • /var/db — локальные базы данных, включая настройки и состояние служб;
  • /var/run — PID-файлы и сокеты.

/tmp — временные файлы

Используется для хранения временных данных. Содержимое может очищаться при перезагрузке или при нехватке места.

/Applications — системные и сторонние приложения

Содержит установленные приложения:

  • системные приложения Apple (подписаны и защищены);
  • сторонние приложения из App Store (установленные в виде .app bundle).

Каждое приложение представляет собой каталог с исполняемым файлом, ресурсами и метаданными (Info.plist).

/private — служебные каталоги

Содержит «реальные» реализации некоторых путей:

  • /private/var/var;
  • /private/etc/etc.

Это сделано для совместимости с Unix-стандартами.

/Developer — инструменты разработчика (временный)

Появляется при подключении устройства к Xcode для отладки. Содержит:

  • демон отладки (debugserver);
  • временные артефакты сборки;
  • символы отладки.

Удаляется после завершения сессии разработки.


Песочница приложений

Ключевая особенность iOS — песочница (sandbox). Каждое приложение работает в изолированном контейнере, расположенном в:

/var/mobile/Containers/Data/Application/<UUID>/

Структура контейнера приложения

  • Documents/ — пользовательские документы, доступные через «Файлы» (если приложение разрешает);
  • Library/ — данные приложения:
    • Preferences/ — настройки (plist-файлы);
    • Caches/ — кэш (может быть удалён системой);
    • Application Support/ — постоянные данные приложения;
  • tmp/ — временные файлы;
  • Library/Cookies/ — cookie для WebView;
  • Library/Keychains/ — данные цепочки ключей (keychain).

Приложение не имеет доступа к контейнерам других приложений, за исключением случаев явного предоставления доступа через App Groups или Shared Containers.


/var/mobile/Media — пользовательский медиаконтент

Содержит медиафайлы пользователя:

  • DCIM/ — фотографии и видео с камеры;
  • Music/ — музыкальная библиотека;
  • Movies/ — видеофайлы;
  • Screenshots/ — скриншоты.

Этот каталог доступен через приложения «Фото», «Музыка» и «Файлы».

/var/mobile/Library — пользовательские настройки и данные

Хранит глобальные данные пользователя:

  • Preferences/ — системные настройки;
  • SMS/ — сообщения (в зашифрованной базе);
  • AddressBook/ — контакты;
  • Keyboard/ — словари и автозамена;
  • Safari/ — данные браузера.

Доступ к этим данным ограничен и регулируется через Privacy API и запросы разрешений.


Особенности iOS

Подпись кода и защита целостности

Все исполняемые файлы в iOS должны быть подписаны сертификатом Apple. Это гарантирует, что:

  • приложение прошло проверку App Store (или развёрнуто через Enterprise/Developer-сертификат);
  • содержимое не было изменено после установки.

Data Protection

iOS шифрует пользовательские данные с использованием Data Protection API. Уровень шифрования зависит от состояния устройства:

  • Complete Protection — данные доступны только при разблокированном устройстве;
  • Protected Until First User Authentication — данные доступны после первой разблокировки после перезагрузки.

Недоступность прямого доступа

Без джейлбрейка пользователь не может:

  • просматривать корневую файловую систему;
  • устанавливать приложения вне App Store;
  • модифицировать системные файлы.

Даже через Files.app виден только ограниченный набор каталогов, связанных с пользовательскими данными и облачными сервисами.

iCloud и синхронизация

Многие данные автоматически синхронизируются с iCloud:

  • настройки приложений;
  • документы;
  • фото (через iCloud Photos);
  • заметки, напоминания, контакты.

Локальные файлы могут быть заменены «заполнителями» (placeholders), а реальные данные загружаются по запросу.